home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / src / bin / hinge / hinge.h < prev    next >
C/C++ Source or Header  |  1992-11-11  |  2KB  |  75 lines

  1. #ifndef HINGE_H
  2. #define HINGE_H
  3.  
  4. #include "geomclass.h"
  5. #include "polylistP.h"
  6. #include "forms.h"
  7.  
  8. extern PolyList *pl;
  9.  
  10. #define MAXTHINGS    50
  11. extern Transform *TT[];
  12. extern float epsilon;
  13.  
  14. extern FILE *togv, *fromgv;
  15.  
  16. #define HYPERBOLIC    1
  17. #define EUCLIDEAN    2
  18. #define SPHERICAL    3
  19. extern int space;
  20.  
  21. extern int haveaxis;
  22. extern float angle;
  23. extern float hingeincr;
  24. extern int killgv;
  25.  
  26. extern Point base, tip, axis, currentedge[2];
  27. extern Transform BaseT;
  28.  
  29. extern int mainpos[2];
  30. extern int helppos[2];
  31. extern int infopos[2];
  32. extern int filepos[2];
  33.  
  34. #define SHOWMAT(f, name, T) \
  35.   { fprintf(f, "%s =\n", name); \
  36. fprintf(f, "\t{{%6f, %6f, %6f, %6f},\n", T[0][0], T[0][1], T[0][2], T[0][3]);\
  37. fprintf(f, "\t {%6f, %6f, %6f, %6f},\n", T[1][0], T[1][1], T[1][2], T[1][3]);\
  38. fprintf(f, "\t {%6f, %6f, %6f, %6f},\n", T[2][0], T[2][1], T[2][2], T[2][3]);\
  39. fprintf(f, "\t {%6f, %6f, %6f, %6f}}\n", T[3][0], T[3][1], T[3][2], T[3][3]);\
  40.     fprintf(f, "\n"); }
  41.  
  42. int WhichFace(HPoint3 *p, Transform T, PolyList *pl);
  43. int CoPlanar(HPoint3 *p, Transform T, Poly *poly);
  44. int pt4equal(HPoint3 *a, HPoint3 *b);
  45. float space_distance(HPoint3 *a, HPoint3 *b);
  46. float HPt3EucDistance( HPoint3 *a, HPoint3 *b );
  47. float HPt3HypDistance( HPoint3 *a, HPoint3 *b );
  48. float MinkDot( HPoint3 *a, HPoint3 *b );
  49. int PolyContainsEdge(Point e[], Transform T, Poly *poly);
  50. void WritePolyListInfo(PolyList *pl);
  51. int HingeLoad(char *file);
  52. int NewInst(float ang);
  53. void ComputeTransform(Transform T, Transform BaseT, float ang);
  54. int NewTTindex();
  55. void DefineAxis(Point *a, Point *b);
  56. void Rotation(Transform T, Point *base, Point *axis, float angle);
  57. void DefineThing(Geom *g);
  58. void DefinePick(Geom *g);
  59. void Inst(int n, float ang);
  60. void Undo();
  61. void Reset();
  62. void ShowAxis();
  63. void space_translate_origin(Point *pt, Transform T);
  64. void HingeSpace(int s);
  65.  
  66.  
  67. #define SHOWPT3(f, name, pt) \
  68.   fprintf(f, "%s = (%6f, %6f, %6f)\n", name, (pt).x, (pt).y, (pt).z)
  69.  
  70. #define SHOWHPT3(f, name, pt) \
  71.   fprintf(f, "%s = [%6f, %6f, %6f, %6f]\n", name, (pt).x, (pt).y, (pt).z, (pt).w)
  72.  
  73.  
  74. #endif /* HINGE_H */
  75.